package com.example.week12;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.webkit.WebView;
import android.widget.TextView;

public class URLConnectionActivity extends AppCompatActivity {
    //代表网页 URL 的字符串（尚无文件名及参数）
    String urlstr = "http://192.168.182.101:8081/test1/";
    //用于显示网页源代码的文本框
    TextView showSource;
    //用于生成和显示网页的 WebView 组件
    WebView showWeb, goYtu;
    //代表服务器响应的字符串
    //为了在线程间传递结果而增加的内部属性
    String response;
    //读取网页是一个耗时操作，需要新开线程完成，设置 Handle 用于数据传递
    Handler handler=new Handler() {
        @Override
        public void handleMessage(Message msg) {
            if(msg.what ==0x123){
                //设置 show 组件显示服务器响应
                showSource.setText(response);
            }
            super.handleMessage(msg);
        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_urlconnection);

        //初始化组件
        showSource= findViewById(R.id.showSource);
        showWeb= findViewById(R.id.showWeb);
        goYtu = findViewById(R.id.goLink);

        //设置“Get 方法访问”按钮，当点击时，用 GET 方法分别获得 getpage.jsp 源代码和网页
        //注意 getpage.jsp 是动态网页，手机端获得的是 web 服务器运行程序后的结果
        //若 getpage.jsp 中有数据库的调用，手机端间接地访问到了 Web 数据库
        findViewById(R.id.get).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //利用新线程获得 getpage.jsp 的源代码并显示

                new Thread(){
                    @Override
                    public void run() {
                        response=GetPostUtil.sendGet(urlstr + "getpage.jsp","name=YTUer");
                        //发送消息通知 UI 线程更新 UI 组件
                        handler.sendEmptyMessage(0x123);
                    }
                }.start();
                //在 WebView 中加载网页
                showWeb.loadUrl(urlstr + "getpage.jsp?name=YTUer");
            }
        });

        //设置“Post 方法访问”按钮，当点击时，用 POST 方法分别获得 postpage.jsp 源代码和网页
        //注意 postpage.jsp 是动态网页，手机端获得的是 web 服务器运行程序后的结果
        //若 postpagepage.jsp 中有数据库的调用，手机端间接地访问到了 Web 数据库
        findViewById(R.id.post).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //利用新线程获得 postpage.jsp 的源代码并显示
                new Thread(){
                    @Override
                    public void run() {
                        response=GetPostUtil.sendPost( urlstr + "postpage.jsp","name=ytu&pwd=123456");
                        //发送消息通知 UI 线程更新 UI 组件
                        handler.sendEmptyMessage(0x123);
                    }
                }.start();
                //在 WebView 中加载网页
                showWeb.loadUrl(urlstr + "postpage.jsp?name=ytu&pwd=123456");
            }
        });
        //动态生成页面对象（此处仅包含一个文本+链接）
        StringBuffer htmlBuffer = new StringBuffer();
        htmlBuffer.append("<html>");
        htmlBuffer.append("<body>点击<a href=\"http://www.ytu.edu.cn\">烟大</a></body>");
        htmlBuffer.append("</html>");
        //将生成的页面装载到 WebView 组件中
        goYtu.loadDataWithBaseURL("",htmlBuffer.toString(),"text/html","UTF-8","");
    }
}